/*
* ============================================================================
*  Name        : example_001.hxx
*  Part of     : Finite state machine examples
*  Description : State machine body
*  Version     : %version: %
*  
*
* ============================================================================
*/
/**
    @code 
    SM_DECLARE
    (
        // Source code name to be passed to create( ) of HelloTheWorld class instance
        HelloTheWorld_001_src,  
        
        // Class name 
        HelloTheWorld_001       
        
        // Synchronous execution. start( ) does not exit util state machine is finished
        sync                    
        {
            // All unprocessed in other states events get here. The only mandatory state.
            Exceptions          
            {
                // 'exit' - predefined action function terminating state machine
                Ev_Sys_Terminate        exit                nojump  
            }
            // Entry state. All state names are user defined.
            Main
            {
                // On state entry execute say_hello_world( ). 'nojump' is a reserved key word, instructing to stay in the state
                Ev_Sys_OnEntry          say_hello_world     nojump

                // Invoke exit to terminate state machine. This shows how to invoke many actions on one event
                Ev_Sys_OnEntry          exit                nojump
            }
        } 
    );
    @endcode 
 */

SM_DECLARE
(
    // Source code name to be passed to create( ) of HelloTheWorld class instance
    HelloTheWorld_001_src,  
    
    // Class name 
    HelloTheWorld_001       
    
    // Synchronous execution. start( ) does not exit util state machine is finished
    sync                    
    {
        // All unprocessed in other states events get here. The only mandatory state.
        Exceptions          
        {
            // Engine shutdown event handler. 'exit' - predefined action function terminating state machine
            Ev_Sys_Terminate        exit                nojump  
        }
        // Entry state. All state names are user defined.
        Main
        {
            // On state entry execute say_hello_world( ). 'nojump' is a reserved key word, instructing to stay in the state
            Ev_Sys_OnEntry          say_hello_world     nojump

            // Invoke exit to terminate state machine. This shows how to invoke many actions on one event
            Ev_Sys_OnEntry          exit                nojump
        }
    } 
);
